[[!toc levels=6]]

---

# Documentação

<https://ipfs.io> de nada.  

# Gateways

* ~~<https://ipfs.iikb.org/ipfs>~~ _offline_  
* ~~<https://ipfs.midiacapoeira.in/ipfs>~~ _mal configurado_  

Limite: 100MB.

# Tutorial

## Instalar com ipfs-update

Acessar <https://dist.ipfs.io/ipfs-update/> e achar na última versão, um tarball da arquitetura alvo.

Por exemplo, para raspberry pi:

    wget -c https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-arm.tar.gz
    tar -xf ipfs-update_v1.5.2_linux-arm.tar.gz
    ./ipfs-update/ipfs-update install latest

Se tudo der certo, ipfs deverá estar em `~/bin/ipfs`.

## Iniciar e testar

    ipfs init
    ipfs daemon

## Obter hash do nó local

    ipfs config Identity.PeerID

## Ler o arquivo de boas vindas

    ipfs cat /ipfs/$(ipfs config Identity.PeerID)/readme

## Testar gateway

<http://127.0.0.1:8080/ipfs/QmTeW79w7QQ6Npa3b1d5tANreCDxF2iDaAPsDvW6KtLmfB/>

## SystemD

    pi@raspberry:~$ cat ~/.config/system/user/ipfs.service
    [Unit]
    Description=ipfs gateway
    After=network.target
    
    [Service]
    ExecStart=/home/pi/bin/ipfs daemon
    Restart=on-failure
    
    [Install]
    WantedBy=default.target

Isto vai usar o diretório padrão `~/.ipfs`.

Para rodar mais de uma instância no mesmo servidor, é necessário usar uma variável diferente `IPFS_PATH`.

Isto é possível com systemd adicionando a seguinte linha na seção `[Service]`:

    EnvironmentFile=-/home/pi/ipfs/ipfs-1.env

Conteúdo de `/home/pi/ipfs.env`:

    IPFS_PATH=/home/pi/ipfs/ipfs-1.d

Assim é possível fazer vários serviços systemd por exemplo `~/.config/system/user/ipfs-2.service`, etc. cada um com um arquivo de ambiente e um diretório exclusivo. É necessário atribuir portas diferentes para cada serviço, lógico.

## Configurar portas

O arquivo de configuração padrão fica em `~/.ipfs/config`, mas o jeito certo de mexer no arquivo é através de `ipfs config`.

A parte do arquivo de configuração pertinente é:

    "Addresses": {
      "Swarm": [
        "/ip4/0.0.0.0/tcp/4001",
        "/ip6/::/tcp/4001"
      ],
      "API": "/ip4/127.0.0.1/tcp/5001",
      "Gateway": "/ip4/127.0.0.1/tcp/8080"
    },

Exemplo: alterar a porta do gateway (aquele que da pra abrir pelo navegador)

ipfs config Addresses.Gateway '/ip4/127.0.0.1/tcp/8081'

Isto vai fazer com que o gateway apareça agora em <http://127.0.0.1:8081/ipfs/QmTeW79w7QQ6Npa3b1d5tANreCDxF2iDaAPsDvW6KtLmfB/>.

Para o caso de várias instâncias rodando no mesmo servidor, todas as portas deveriam ser alteradas. _(carece de fontes, quem disse isto?)_

[[!meta title="IPFS"]]
[[!meta tags="ipfs"]]

